const db=require('../mysql/index')  //导入数据库配置模块
const bcrypt=require('bcryptjs')   //导入密码加密模块
const plug=require('../plug/index')  //导入自定义的一些处理方法
const jwt = require('jsonwebtoken') //导入jwt模块


//获取用户
exports.getusers=(req,res)=>{
   const page=parseInt(req.query.page)
   const pagesize=parseInt(req.query.pagesize)
   const sql1='select * from users order by userId asc limit ?,?'
   
       //   查找全部的数据
        db.query('select * from users',(err,result)=>{
       if (err) return res.sendError(err.message) 
        const total=result.length
        
    //查询指定的页码
      db.query(sql1,[page,pagesize],function (err,result1){

      if (err) return res.sendError(err.message)
      if (result1.affectedRows===0){
         return res.sendError('找不到用户数据表')

      }
           // 去除密码等敏感字段
      for (let i in result1){
        delete result1[i].password
      }
      const row=result1
    
         // 查询成功
      res.send({
         status: 0,
         message: '获取用户数据成功！',
         data:{row,total}
            
        })
    
      


   })

      })

}

//添加用户
exports.addusers=(req,res)=>{

   const userinfo=req.body

   //查找数据库看是否已经存在这个学号的用户

   const sql1='select * from users where studentId=?'
   db.query(sql1,userinfo.studentId,function (err,results){
      // 执行 SQL 语句失败
      if (err) return res.sendError(err.message )
      // SQL 语句执行成功，但影响行数为 1，说明找到相同学号的数据
      if (results.length !==0 && results[0].studentId === userinfo.studentId) {
         return res.sendError('已经存在该用户')
      }
// 如果用户不存在
      userinfo.password='123456'
      userinfo.ischangpassword=0
      userinfo.userId=plug.Math_random()
      userinfo.role='0'
      db.query('insert into users set ?', userinfo,function (err,results){
         // 执行 SQL 语句失败
         if (err) return res.sendError(err.message )
         // SQL 语句执行成功，但影响行数不为 1
         if (results.affectedRows !== 1) {
            return res.sendError( '添加用户失败')
         }
         // 添加成功
         res.send({ status: 0, message: '添加成功！' })

      })
   })






}

//删除用户
exports.removeuser=(req, res)=>{

   const id=req.params.id
   const sql='delete  from users Where userId=?'
   db.query(sql,id,(err,result)=>{
       
       if(err) return res.sendError(err.message)
       if(result.affectedRows === 0) return res.sendError('找不到该用户，有可能已经被删除')
       res.send({status:0,message:'删除用户成功'})

       
   })
   

//   plug.searchById(id,res,
//       ()=>{res.sendError('找不到该用户，删除用户失败')},
//       ()=>{ res.send({ status: 0, message: '操作成功，演示数据不真正删除！' })})



}

//更新用户信息
exports.updatausers=(req, res)=>{

  let newuserinfo= req.body

   const id=req.params.id
   


   plug.searchById(id,res,()=>{
      res.sendError('没有找到该用户，可能已经被删除')
   },()=>{
      

      const sql1='UPDATE users SET ? Where userId=?'
      db.query(sql1,[newuserinfo, id],function (err,result){
         if (err) return res.sendError(err.message)
         if (result.affectedRows !==1) return  res.sendError('更新数据失败')
         res.send({status:0,message:'更新数据成功！'})

      })



   })



}

//根据id获取用户信息
exports.getusersByid=(req,res)=>{
     const id=req.params.id
     
     const sql='select * from users Where userId=?'
    db.query(sql,id,(err,result)=>{
        if(err) return res.sendError(err.message)
        if(result.length === 0) res.sendError('找不到该用户')
                   // 去除密码等敏感字段
      for (let i in result){
        delete result[i].password
      }
        res.send({status:0,data:result })
        
        
        
    })
    
}

//根据id 修改用户密码

exports.editUsersPasswor=(req,res)=>{
    

    const info=req.body //密码，id
        
    const sql='select * from users Where userId=? '
    const sql2='UPDATE users set password=?,ischangpassword=? Where userId=?'
    
    db.query(sql,info.userId,(err,result)=>{
        
        if(err) return res.sendError(err)
        if(result.length !==1) return res.sendError('用户不存在，有可能已经被删除')
   
            
            //ischangpassword=0 表示第一次修改密码
            const newpwd=bcrypt.hashSync(info.password,10)
            
            
            db.query(sql2,[newpwd,1,info.userId],(err,result2)=>{
                
             if(err) return res.sendError(err)
             if(result2.affectedRows !==1) return res.sendError('更新密码失败')
                
                res.send({status:0,message:'修改密码成功'})
                
            })
            
            
    

        
        
        
    })
    
    
    
}



